/*
 * TeacherNameIterator.h
 *
 *  Created on: 11 May 2010
 *      Author: Savramis Sartios
 */

#ifndef TEACHERNAMEITERATOR_H_
#define TEACHERNAMEITERATOR_H_
#include "../List/ITeacherNameList.h"

class TeacherNameIterator : public ITeacherNameIterator {
public:
	TeacherNameIterator(const ITeacherNameList *list);
	virtual ~TeacherNameIterator();
	/**
	* Ξεκινά από το πρώτο στοιχείο της δομής
	*/
	virtual void first();

	/**
	* Πηγαίνει στο επόμενο στοιχείο της δομής
	*/
	virtual void next();

	/**
	* Ελέγχει έαν η δομή έφτασε στο τέλος της
	* \return false εάν βρισκόμαστε μέσα στα όρια της δομής
	*/
	virtual bool isDone();

	/**
	* Επιστρέφει τον τρέχων κωδικό
	*/
	virtual string * getCurrentTeacherCode();

	/**
	* Επιστρέφει το όνομα του καθηγητή στον οποίο ανήκει ο κωδικός
	* \param teacherCode ο κωδικός του καθηγητή
	* \return string το όνομα του καθηγητή
	*/
	virtual string * getTeacherName(const string *teacherCode);

private:
	bool setList(const ITeacherNameList *list);
	ITeacherNameList *list_;
	map<string*,string*>::iterator it_;
	int current_;
};

#endif /* TEACHERNAMEITERATOR_H_ */
